FORMAT: 1A
HOST: http://api-prod.junashare.com/

# Junashare Service 1.x
享什么app API 1.x 版本

# Data Structures

## Link (object)
+ url (string): `http://www.tmall.com` - 链接的URL
+ title (string): `tmall` - 用户显示连接的文字，在商家展示的部分作为图标区分标识符

## Image (object)
+ fid: 1 - 图片文件id
+ self: `http://drupal7.local/sites/default/files/banner_image/pic2-003%403x.jpg` - 图片的URL
+ filemime: `image/jpeg` - 图片类型
+ filesize: 55573 - 图片大小
+ width: 750 - 图片宽度
+ height: 690 - 图片高度
+ styles (object) - 其他大小的图片，例如hdpi和hhdpi

## Banner (object)
+ type (enum[string]) - Banner所属的类型

    + `0` - 表示普通图片Banner，只需要展示
    + `1` - 表示白领商品Banner，点击后进入白领商品
    + `2` - 表示壹购商品Banner，点击后进入壹购商品
    + `3` - 表示URL Banner，点击后展示URL内容

+ parameter (string) - 当type为1或者2时，该值为商品id，当type为3时是URL地址，其他为null
+ images (Image)

## Column (object)
+ id (string) - id
+ label (string) - 栏目名字
+ self (string) - 指向获取该栏目的api地址

## InfoCategory (Column)
+ label (string) - 信息或者规则页面所属的分类

## Seller (object)
+ label (string) - 商家名字
+ introduce (string) - 商家的介绍
+ logo (Image) - 商家的logo

## SkuProduct (object)
+ market_price: `10` - 商品市场价格
+ detail_desc - 商品的详细描述
+ main_kv (array[Image]) - 商品详细界面大KV
+ image_for_share_list (Image) - 商品在享什么列表上展示的图片
+ image_on_item_in_box (Image) - 商品在被收录到盒子中展示的图片
+ image_on_coupon (Image) - 商品在白领券上展示的图片
+ image_on_order (Image) - 商品在订单上展示的图片
+ image_for_yigou_list (Image) - 商品在壹购列表上展示的图片
+ brand_links (array[Link]) - 商品商家的外链

## YigouProduct (object)
+ nid: `9` - 商品id
+ label: `拓普克林 轻柔丝滑洗发水 60ml` - 显示的名字
+ price: `7.9` - 商品壹购价格
+ stock: `100` - 商品总库存
+ remaining: `30` - 商品剩余数量
+ num_in_box: `10` - 商品被收纳入盒子的数量
+ sku_product (SkuProduct) - 壹购商品对应的SKU商品，包含必要的素材
+ provider (Seller) - 供应商信息
+ in_box: `0` - 商品是否已经被当前用户加入盒子，1为已经加入，0为未加入，未登入状态始终为0

## YaoxiangProduct (object)
+ nid: `9` - 商品id
+ label: `拓普克林 轻柔丝滑洗发水 60ml` - 显示的名字
+ stock: `1` - 可以中奖的人数
+ sku_product (SkuProduct) - 壹购商品对应的SKU商品，包含必要的素材
+ provider (Seller) - 供应商信息
+ participation_status (object)
    + is_participate: `1` - 是否已经参与了该摇享
    + total_participation: `2` - 总参与该摇享的人数

## ShareProduct (object)
+ nid: `9` - 商品id
+ label: `拓普克林 轻柔丝滑洗发水 60ml` - 显示的名字
+ stock: `100` - 商品总库存
+ remaining: `30` - 商品剩余数量
+ sku_product (SkuProduct) - 壹购商品对应的SKU商品，包含必要的素材
+ provider (Seller) - 供应商信息
+ in_box: `0` - 商品是否已经被当前用户加入盒子，1为已经加入，0为未加入，未登入状态始终为0

## BoxItem (ShareProduct)
+ price: `7.90` - 在我的盒子中显示地价格
+ created: `2016-10-27 14:53:53` - 加入盒子的时间
+ type_machine_name: `product` - 商品类型的机器名
+ type: `壹购商品` - 商品类型的中文名

## ShareProductTimePeriod (object)
+ start: `1488254400` - 开始时间
+ end: `1488268799` - 结束时间
+ selected: `0` - 是否高亮，0不高亮，1高亮
+ remain: `0` - 剩余时间秒数

## PrivateMessage (object)
+ mid: 1 - 私信的id
+ is_new: 1 - 是否已读，1为未读，0为已读
+ subject: `abcde` - 私信主题
+ body: `foobar` - 私信内容
+ timestamp: `2017-04-06 23:36` - 私信发布的时间
+ message_type: 2 - 消息类型，1为客服消息，2为消息提醒，3为热门活动

# Group Banner

## Banner List [/api/v1.0/banner{?fields,filter}]

### Retrieve All Banners [GET]
+ Parameters
    + fields (enum[string]) - 接口可以获取到的所有的字段都能单独获取，

        例如：fields=type,parameter,images.self

        + Members
            + `type`
            + `parameter`
            + `images.self`
            + `...`

    + filter (enum[string]) - 接口可以通过字段来筛选数据，

        例如：filter[column]=1 则表示获取所有column=1的数据。
        column的可选值是：_1_ 表示享什么板块，_2_ 表示壹购板块

        + Members
            + `column`
            + `...`

+ Response 200 (application/json)
    + Attributes (object)
        + data (array[Banner])
        + count: 1 - 数据库中对象的总个数
        + column (Column)

# Group Info Page

## Info Page List [/api/v1.0/infopage{?fields,filter}]

### Retrieve All Info Pages [GET]
+ Parameters
    + fields (enum[string]): `items` - 接口可以获取到的所有的字段都能单独获取，

        例如：fields=items

        + Members
            + `items`

    + filter (enum[string]) - 接口可以通过字段来筛选数据，

        例如：filter[category.label]=认证须知 则表示获取所有category.label为认证须知的数据。
        category.label的可选值是：

        + Members
            + `认证须知`
            + `为何需要认证`

+ Response 200 (application/json)
    + Attributes (object)
        + items (array[string])
            + `1.上传证明资料正面`
            + `2.确保公司全称、公司地址、姓名与手机号码等信息齐全（在职证明需盖公章）`
            + `3.保证所有信息清晰可辩认`
            + `4.不可上传电子截屏`
        + count: 1 - 数据库中对象的总个数
        + category (InfoCategory)
            + label: `认证须知`

# Group Product

## Yigou Product List [/api/v1.0/yigou/{id}]

### Retrieve Yigou Product List [GET]
+ Parameters
    + id: `9` - 商品id，不传递id，获取整个列表

+ Response 200 (application/json)
    + Attributes (object)
        + data (array[YigouProduct])
        + remaining: `8400` - 倒计时剩余秒数

## Yaoxiang Product List [/api/v1.0/yaoxiang/{id}]

### Retrieve Yaoxiang Product List [GET]
+ Parameters
    + id: `9` - 商品id，不传递id，获取整个列表

+ Response 200 (application/json)
    + Attributes (object)
        + data (array[YaoxiangProduct])
        + remaining: `8400` - 倒计时剩余秒数

## Share Product List [/api/v1.0/shareproduct/{id}{?time,page}]

### Retrieve Share Product List [GET]
+ Parameters
    + id: `9` - 商品id，不传递id，获取整个列表
    + time: `1` - 场次标志，当请求时间在晚上0点至8点前，time参数无效，始终返回昨天最后一场数据
    + page: `1` - 分页

+ Response 200 (application/json)
    + Attributes (object)
        + data (array[ShareProduct])
        + time_period (array[ShareProductTimePeriod])

## Yigou Purchase [/juna/product/purchase.json]

### Do a Yigou Purchase [POST]
+ Request (application/json)

        {
            "nid": "120"
        }

+ Response 200 (application/json)
    + Attributes (object)
        + message: `购买成功`
        + nid: 120
        + data (object)
            + uid
            + created
            + nid
            + product_type
            + amount
            + price
            + total_price
            + sorderid
            + status
            + id
            + payment_type
            + updated

## Share Product Apply [/juna/share_product/apply.json]

### Apply a Share Product [POST]
+ Request (application/json)

        {
            "nid": 21
        }

+ Response 200 (application/json)
    + Attributes (object)
        + message: `申请成功`
        + nid: 21
        + data (object)
            + uid
            + created
            + nid
            + product_type
            + amount
            + price
            + total_price
            + sorderid
            + status
            + id
            + payment_type
            + updated

## Yaoxiang Product Enrollment [/juna/product/swingshare.json]

### Enroll a Yaoxiang Product [POST]
+ Response 200 (application/json)
    + Attributes (object)
        + data (object)
            + uid: 1
            + nid: 123
            + swingnum: `NO.1`
            + created: 1489510504
            + pdate: `2017-03-15`
            + title: `yaoxiang_product`
            + status: 0
            + couponid: 40
            + id: 52

## My Yaoxiang List [/juna/myswingshare.json{?page}]

### Get My Yaoxiang List [GET]
+ Response 200 (application/json)
    + Attributes (object)
        + data (array[object])
            + status
            + pdate
            + nid
            + swingnum
            + pictures
            + remaintime

# Group Box

## My Box List [/juna/mybox.json]

### Retrieve My Box List [GET]
+ Response 200 (application/json)
    + Attributes (object)
        + data (array[BoxItem])
        + remain_boxproduct_num: `2` - 我的盒子还剩下的空间

## Add Item to Box [/juna/product/addtobox.json]

### Add to box [POST]
+ Request (application/json)

        {
            "nid": 21
        }

+ Response 200 (application/json)
    + Attributes (object)
        + message: `加入盒子成功`
        + nid: `21`

# Group Notification

## Getui Id [/api/v1.0/getui_user_binding]

### Binding Getui cid with uid [POST]
+ Request (application/json)

        {
            uid: 9, // 用户id，该接口需要在用户已经登入的情况下请求，需要带上cookie和csrf的头部信息。如果在用户实体中已经有getui_id字段说明已经绑定
            cid: xxxxxxxx // 个推设备ID
        }

+ Response 200 (application/json)
    + Attributes (object)
        + data (object)
            + uid
            + cid - 接口成功后，会再用户实体中添加getui_id字段

# Group Order

## Order List [/juna/orders.json{?status,page}]

### Get Order List [GET]
+ Parameters
    + status (enum[number]) - 订单的各种状态，不传递参数为所有订单
        + `0` - 待付款订单
        + `2` - 待发货订单
        + `3` - 待收货订单
        + `6` - 待评价订单
    + page: `1` - 分页

+ Response 200 (application/json)

## Order [/juna/order/{id}.json]

### Retrieve An Order Detail [GET]
+ Parameters
    + id: `1` - 订单的sorderid

+ Response 200 (application/json)
    + Attributes (object)
        + id: `309` - 订单的内部id号
        + created: `2017-02-15 12:17:38` - 下单时间
        + total_price: `0` - 实付款（含运费）
        + express_provider: `天天快递` - 快递公司
        + express_id: `580346274219` - 快递单号
        + sorderid: `2017021512173913401600` - 订单号
        + status: `0` - 订单的各种状态，与订单列表中的状态相对应，0为待付款，2为待发货，3为待收货，6为待评价
        + title: `皇冠 丹麦曲奇原味 90g` - 商品名字
        + type: `白领商品` - 订单类型
        + mobile: `13761654290` - 手机号
        + full_name: `Tony` - 收件人
        + address: `这个是快递的地址` - 收件地址
        + market_price: `10` - 价值，市场价值
        + price: `0` - 实际价格
        + uri: `http://api-dev.junashare.com/sites/default/files/product_image_on_order/%E8%AE%A2%E5%8D%95%402x.png` - 商品图片
        + main_kv - 订单评价页面上的大图，选取商品大图的第一张
        + express_fee: `0` - 快递费

## Order Status [/juna/order/update.json]

### Update An Order Status [POST]

+ Request (application/json)

        {
            "status": "comment", // 可选参数有sign-off(签收)和comment(评论)
            "sorderid":"2017020423053234465275",
            "comment": "This is comment" // 传递sign-off时可以不传递这个参数
        }

+ Response 200 (application/json)
    + Attributes (object)
        + success: 1
        + message: `操作成功`

# Group User

## User Logout [/juna/user/logout.json]

### Logout a user session [POST]

+ Response 200 (application/json)
    + Attributes (object)
        + uid: 0
        + hostname: `116.233.92.188`
        + roles
            + 1: `anonymous user`
        + cache: 0

## User Login [/juna/user/login.json]

### Login a user session [POST]

+ Request (application/json)

        {
            "name": "xxxx",
            "pass": "xxxxxxxx"
        }

+ Response 200 (application/json)

# Group Private Message

## My Private Message [/juna/mymessage.json]

### Get My Private Message List [GET]

+ Response 200 (application/json)
    + Attributes (array[PrivateMessage])

## Mark Message as already Read [/juna/mymessage/update.json]

### Set Read State [POST]

+ Request (application/json)

        {
            "mid": 1
        }

+ Response 200 (application/json)
    + Attributes (object)
        + data: 1
